﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace GameEngine.PDNParser
{
    /// <summary>
    /// Types of tokens returns by PDN scanner
    /// </summary>
    public enum enumScannerToken { Number, String, Sign };

    /// <summary>
    /// Tokens returns by PDN scanner
    /// </summary>
    public struct ScannerToken
    {
        public enumScannerToken enumScannerToken;
        public char cSign;
        public string sString;
        public int lLineNumber;
    }

    /// <summary>
    /// Types of lexical tokens in PDN 3.0
    /// </summary>
    public enum enumLexToken { MoveNumber, MoveSeparator, CaptureSeparator, AlphaSquare, NumSquare, MoveStrength, Nag,
        LParen, RParen, LBracket, RBracket, Asterix, Setup, String, Comment, Identifier, EOF, OtherSymbol,
        Win1, Draw1, Loss1, Win2, Draw2, Loss2, DoubleForfeit, Ellipses};

    /// <summary>
    /// Lexical element class of PDN 3.0
    /// </summary>
    public struct LexToken
    {
        public enumLexToken LexTokenType;
        public string sValue;
        public int lLineNumber;
    }      
    


    public class FENResult
    {
        public enumFigureColor OnMove
        { get; set; }

        public List<FENPosition> Positions
        { get; set; }

        public FENResult()
        {
            Positions = new List<FENPosition>();
        }
    }

    public class FENPosition
    {
        public int Position
        { get; set; }

        public enumFigureType FigureType
        { get; set; }
    }

}